package newpackage;

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class PacienteDAO {

	public EntityManager em;

	public PacienteDAO() {
		EntityManagerFactory emf = Persistence.createEntityManagerFactory("pacientePU");
		em = emf.createEntityManager();
	}

	public Paciente findById(int id) {
		return em.find(Paciente.class, id);
	}

	public void save(Paciente paciente) {
                em.getTransaction().begin();
		em.persist(paciente);
                em.getTransaction().commit();
	}
        public void update(Paciente paciente){
            System.out.println(paciente.getIdInt());
            em.getTransaction().begin();
            em.merge(paciente);
            em.getTransaction().commit();
        }
        
        public void remove(Paciente paciente){
            em.getTransaction().begin();
            em.remove(paciente);
            em.getTransaction().commit();
        }
        
        
	public List<Paciente> findAll() {
		return em.createQuery("select p from Paciente p").getResultList();
	}
        
        public List<Paciente> findByNome(String nome){
            
        return em.createQuery("select p from Paciente p where p.nome like :nome").setParameter("nome", "%"+nome+"%").getResultList();
        }
        
        public List<Paciente> findByEndereco(String endereco){
            
        return em.createQuery("select p from Paciente p where p.endereco like :endereco").setParameter("endereco", "%"+endereco+"%").getResultList();
        }
        
        public List<Paciente> findByEstado(String estado){
            
        return em.createQuery("select p from Paciente p where p.estado = :estado").setParameter("estado", estado).getResultList();
        }
}
